package org.dromara.oce.domain.bo;

import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.oce.domain.OceMaterial;

import java.io.Serializable;
import java.math.BigDecimal;
/**
 * 素材业务对象 oce_material
 *
 * @author dsbb
 * @date 2025-06-05
 */
@Data
@EqualsAndHashCode()
@AutoMapper(target = OceMaterial.class, reverseConvertGenerate = false)
public class OceMaterialBo implements Serializable {

    /**
     * 素材id
     */
    @NotNull(message = "素材id不能为空", groups = { EditGroup.class })
    private Long materialId;

    /**
     * 管家账号id
     */
    @NotNull(message = "管家账号id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long accountId;

    /**
     * 广告主id
     */
    @NotNull(message = "广告主id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long advertiserId;

    /**
     * 视频id
     */
    private String id;

    /**
     * 素材的文件名
     */
    private String filename;

    /**
     * 视频标签
     */
    private String labels;

    /**
     * 视频首帧截图，仅限同主体进行素材预览查看，若非同主体会返回 素材所属主体与开发者主体不一致无法获取URL
     */
    private String posterUrl;

    /**
     * 视频地址，仅限同主体进行素材预览查看
     */
    private String url;

    /**
     * 视频宽度
     */
    private Long width;

    /**
     * 视频高度
     */
    private Long height;

    /**
     * 视频大小
     */
    private Long size;

    /**
     * 视频格式
     */
    private String format;

    /**
     * 视频md5值
     */
    private String signature;

    /**
     * 视频时长
     */
    private BigDecimal duration;

    /**
     * 码率，单位bps
     */
    private Long bitRate;

    /**
     * 素材来源：AD_SITE-ad后台本地上传；
     */
    private String source;

    /**
     * 星图达人ID
     */
    private String starAuthorId;


}
